﻿// using System;
// using System.Collections.Generic;
// using System.Linq;
// using System.Text;
// using WFNetLib;
// using System.Collections;
// using System.Threading;
// using System.Net;
// using System.Runtime.Serialization.Json;
// using System.IO;
// using WFNetLib.Log;
// 
// namespace TempDataInterfaceDLL
// {
//     public class TempDataInterface
//     {
//         public delegate void ShowTextCallbackDelegate(string str);
//         public ShowTextCallbackDelegate ShowText = null;
// 
// 
//         public delegate void NewTempDataCallbackDelegate(TempData td);
//         public NewTempDataCallbackDelegate NewTempData = null;
// 
//         public delegate void NewCallDataCallbackDelegate(TempData td);
//         public NewCallDataCallbackDelegate NewCallData = null;
// 
//         private string[] UserName;
//         private string[] Password;
//         WFHttpWebResponse[] WebResponse;
//         private DateTime[] LastGetTime;
// 
//         private Hashtable IntCalls;
//         private Hashtable DecimalCalls;
//         private Hashtable NoticeCalls;
//         private bool bPeriodGetDataThreadStop;
//         private bool bPeriodGetDataThreadIsStop;
// 
//         public Thread PeriodGetDataThreadIns = null;
//         private int count;
// 
//         public void StartPeriodGetDataProc()
//         {
//             if (!bPeriodGetDataThreadIsStop)
//                 return;
//             bPeriodGetDataThreadStop = false;
//             bPeriodGetDataThreadIsStop = false;
//             count = 0;
//             PeriodGetDataThreadIns = new Thread(new ThreadStart(PeriodGetDataProc));
//             PeriodGetDataThreadIns.Name = "周期访问端口";
//             ShowTextLogProc("周期访问端口开始");
//             PeriodGetDataThreadIns.Start();
//         }
//         public void StopPeriodGetDataProc()
//         {
//             bPeriodGetDataThreadStop = true;
//             bPeriodGetDataThreadIsStop = true;
//             PeriodGetDataThreadIns.Abort();
//             //while (!bPeriodGetDataThreadIsStop) ;
//         }
//         private void PeriodGetDataProc()
//         {
//             try
//             {
//                 while (!bPeriodGetDataThreadStop)
//                 {
//                     count++;
//                     //                 if (count >10000 )
//                     //                 {
//                     //                     for (int i = 0; i < 30; i++)
//                     //                     {
//                     //                         WebResponse[i] = new WFHttpWebResponse();
//                     //                     }
//                     //                 }
//                     ShowTextLogProc("-----------------------------第" + count.ToString() + "次访问--------------------------");
//                     CheckData();
//                     Thread.Sleep(10000);
//                 }
//                 bPeriodGetDataThreadIsStop = true;
//             }
//             catch (System.Exception ex)
//             {
//                 ShowTextLogProc("重要错误" + ex.Message);
//             }
//         }
//         public void CheckData()
//         {
//             FirstIntCheckTime = DateTime.Now;
//             //获取呼叫号
//             List<CallData> Notices = GetData(29);
//             if (Notices != null)
//             {
//                 //for (int j = (calls.Count-1); j >=0; j--)
//                 for (int j = 0; j < Notices.Count; j++)
//                 {
//                     List<CallData> noticeCalls = (List<CallData>)NoticeCalls[Notices[j].caller];
//                     if (noticeCalls != null)
//                     {
//                         noticeCalls.Add(Notices[j]);
//                     }
//                     else
//                     {
//                         noticeCalls = new List<CallData>();
//                         noticeCalls.Add(Notices[j]);
//                     }
//                     NoticeCalls[Notices[j].caller] = noticeCalls;                    
//                     ShowTextLogProc("---------------获得呼叫号-------------------");
//                     ShowTextLogProc(Notices[j].caller);
//                     ShowTextLogProc(Notices[j].callin_time.ToString());
//                     ShowTextLogProc("----------------------------------------------");
//                 }
//             }
//             //获得整数温度
//             for (int i = 0; i < 19; i++)
//             {
//                 List<CallData> calls = GetData(i);
//                 if (calls != null)
//                 {
//                     //for (int j = (calls.Count-1); j >=0; j--)
//                     for (int j = 0; j < calls.Count; j++)
//                     {
//                         List<CallData> intCalls = (List<CallData>)IntCalls[calls[j].caller];
//                         if (intCalls != null)
//                         {
//                             intCalls.Add(calls[j]);
//                         }
//                         else
//                         {
//                             intCalls = new List<CallData>();
//                             intCalls.Add(calls[j]);
//                         }
//                         IntCalls[calls[j].caller] = intCalls;
// //                         ShowTextLogProc("---------------获得整数-------------------");
// //                         ShowTextLogProc(calls[j].caller);
// //                         ShowTextLogProc((calls[j].UserIndex + 11).ToString());
// //                         ShowTextLogProc(calls[j].callin_time.ToString());
// //                         ShowTextLogProc("----------------------------------------------");
//                     }
//                 }
//             }
//             //获得小数温度
//             for (int i = 19; i < 29; i++)
//             {
//                 List<CallData> calls = GetData(i);
//                 if (calls != null)
//                 {
//                     //for (int j = (calls.Count-1); j >=0; j--)
//                     for (int j = 0; j < calls.Count; j++)
//                     {
//                         List<CallData> decimalCalls = (List<CallData>)DecimalCalls[calls[j].caller];
//                         if (decimalCalls != null)
//                         {
//                             decimalCalls.Add(calls[j]);
//                         }
//                         else
//                         {
//                             decimalCalls = new List<CallData>();
//                             decimalCalls.Add(calls[j]);
//                         }
//                         DecimalCalls[calls[j].caller] = decimalCalls;
// //                         ShowTextLogProc("---------------获得小数-------------------");
// //                         ShowTextLogProc(calls[j].caller);
// //                         ShowTextLogProc((calls[j].UserIndex - 19).ToString());
// //                         ShowTextLogProc(calls[j].callin_time.ToString());
// //                         ShowTextLogProc("----------------------------------------------");
//                     }
//                 }
//             }
//             Combination();
//             ShowTextLogProc("---------------完成一次扫描--------");
//         }
//         void Combination()
//         {
//             foreach (DictionaryEntry de in DecimalCalls)
//             {
//                 List<CallData> decimalCalls = (List<CallData>)de.Value;
//                 int index; 
//                 while (decimalCalls.Count != 0)
//                 {
//                     index= GetEarlyDecamal(decimalCalls);
//                     CallData decimalCall = decimalCalls[index];
//                     List<CallData> intCalls = (List<CallData>)IntCalls[decimalCall.caller];
//                     bool bSave = false;
//                     if (intCalls != null)//已经有了整数温度
//                     {                            
//                         //组合温度
//                         for (int k = 0; k < intCalls.Count; k++)
//                         {
//                             CallData intCall = intCalls[k];
//                             //小数温度点的时间应位于整数温度点的时间之后的60s内
//                             if (intCall.callin_time < decimalCall.callin_time)
//                             {
//                                 if (intCall.callin_time.AddSeconds(60) > decimalCall.callin_time)
//                                 {
//                                     //合并温度
//                                     float t = intCall.UserIndex + 11;
//                                     t = t + (decimalCall.UserIndex - 19) / 10.0f;
//                                     TempData td = new TempData();
//                                     td._Caller = intCall.caller;
//                                     td._CallInTime = intCall.callin_time;//整数的时间
//                                     td._Temperature = t;
//                                     td._ErrFlag = 0;
//                                     if (NewTempData != null)
//                                     {                                            
//                                         NewTempData(td);
//                                     }
//                                     intCalls.RemoveAt(k);
//                                     //检测整数部分
//                                     CheckIntCall(intCalls, intCall.callin_time);
//                                     OldTempData oldtd = new OldTempData();
//                                     oldtd.Caller = intCall.caller;
//                                     oldtd.CallInTime = intCall.callin_time;//整数的时间
//                                     oldtd.Temperature = t;
//                                     oldtd.ErrFlag = 0;
//                                     OldTempDataDBOption.SavwOldTemp(oldtd);
//                                     //OldTemp[td._Caller] = td;//保存旧温度
//                                     bSave = true;                                    
//                                     IntCalls[decimalCall.caller] = intCalls;       
//                                     //处理呼叫数据
//                                     List<CallData> noticeCalls = (List<CallData>)NoticeCalls[decimalCall.caller];
//                                     if (noticeCalls != null)//有呼叫号
//                                     {
//                                         for (int n = 0; n < noticeCalls.Count; n++)
//                                         {
//                                             CallData noticeCall = noticeCalls[n];
//                                             //小数温度点的时间应位于呼叫号的时间之后的120s内
//                                             if (noticeCall.callin_time < decimalCall.callin_time)
//                                             {
//                                                 if (noticeCall.callin_time.AddSeconds(120) > decimalCall.callin_time)
//                                                 {
//                                                     if (NewCallData != null)
//                                                     {
//                                                         NewCallData(td);
//                                                         noticeCalls.RemoveAt(n);
//                                                         //检测呼叫号
//                                                         CheckNoticeCall(noticeCalls, noticeCall.callin_time);
//                                                         NoticeCalls[decimalCall.caller] = noticeCalls;
//                                                         ShowTextLogProc("---------------组合呼叫数据-------------------");
//                                                         ShowTextLogProc(decimalCall.caller);
//                                                         ShowTextLogProc(t.ToString());
//                                                         ShowTextLogProc(decimalCall.callin_time.ToString());
//                                                         ShowTextLogProc("----------------------------------------------");                                                           
//                                                         break;
//                                                     }
//                                                 }
//                                             }
//                                         }
//                                     }
//                                     ShowTextLogProc("---------------组合温度，无纠错-------------------");
//                                     ShowTextLogProc(decimalCall.caller);
//                                     ShowTextLogProc(t.ToString());
//                                     ShowTextLogProc(decimalCall.callin_time.ToString());
//                                     ShowTextLogProc("----------------------------------------------");
//                                     break;
//                                 }
//                             }
//                         }                                
//                     }
//                     if (!bSave)//只有小数的容错
//                     {
//                         OldTempData oldTd = OldTempDataDBOption.GetOldTemp(decimalCall.caller);//= (TempData)OldTemp[decimalCall.caller];
//                         if (oldTd != null)
//                         {
//                             float t = oldTd.Temperature;
//                             DateTime date = oldTd.CallInTime;
//                             if (date.AddHours(5) > decimalCall.callin_time)//两次温度间隔小于5小时
//                             {
//                                 int oldInt = (int)t;
//                                 float t1, t2, t3;
//                                 t1 = oldInt + (decimalCall.UserIndex - 19) / 10.0f;
//                                 t2 = oldInt + 1 + (decimalCall.UserIndex - 19) / 10.0f;
//                                 t3 = oldInt - 1 + (decimalCall.UserIndex - 19) / 10.0f;
//                                 float t11, t22, t33;
//                                 t11 = Math.Abs(t1 - oldTd.Temperature);
//                                 t22 = Math.Abs(t2 - oldTd.Temperature);
//                                 t33 = Math.Abs(t3 - oldTd.Temperature);
//                                 float tmin = Math.Min(t11, Math.Min(t22, t33));
//                                 if (tmin == t11)
//                                     t = t1;
//                                 else if (tmin == t22)
//                                     t = t2;
//                                 else
//                                     t = t3;
//                                 TempData td = new TempData();
//                                 td._Caller = decimalCall.caller;
//                                 td._CallInTime = decimalCall.callin_time;//整数的时间
//                                 td._Temperature = t;
//                                 td._ErrFlag = 2;
//                                 //存储数据
//                                 if (NewTempData != null)
//                                 {
//                                     NewTempData(td);
//                                 }
//                                 //检测整数部分
//                                 CheckIntCall(intCalls, decimalCall.callin_time);
//                                 OldTempData oldtd = new OldTempData();
//                                 oldtd.Caller = decimalCall.caller;
//                                 oldtd.CallInTime = decimalCall.callin_time;//整数的时间
//                                 oldtd.Temperature = t;
//                                 oldtd.ErrFlag = 2;
//                                 OldTempDataDBOption.SavwOldTemp(oldtd);
//                                 //OldTemp[td._Caller] = td;//保存旧温度
//                                 ShowTextLogProc("---------------组合温度，只有小数的容错，整数超过60s-------------------");
//                                 ShowTextLogProc(decimalCall.caller);
//                                 ShowTextLogProc(t.ToString());
//                                 ShowTextLogProc(decimalCall.callin_time.ToString());
//                                 ShowTextLogProc("----------------------------------------------");
//                             }
//                             else
//                             {
//                                 ShowTextLogProc("---------------放弃小数，历史温度间隔超过5小时--------");
//                                 ShowTextLogProc(decimalCall.caller);
//                                 ShowTextLogProc((decimalCall.UserIndex - 19).ToString());
//                                 ShowTextLogProc(decimalCall.callin_time.ToString());
//                                 ShowTextLogProc("----------------------------------------------");
//                             }
//                         }
//                     }
//                     decimalCalls.RemoveAt(index);
//                 }
//             }
//             ShowTextLogProc("检查整数容错:" + FirstIntCheckTime.AddSeconds(-120).ToString());
//             foreach (DictionaryEntry de in IntCalls)
//             {
//                 List<CallData> intCalls = (List<CallData>)de.Value;
//                 if (intCalls.Count != 0)
//                 {
//                     CheckIntCall(intCalls, FirstIntCheckTime.AddSeconds(-120));
//                 }
//             }
//         }
//         void CheckNoticeCall(List<CallData> noticeCalls, DateTime endTime)
//         {
//             bool bOK = false;
//             while (!bOK)
//             {
//                 bOK = true;
//                 for (int i = 0; i < noticeCalls.Count; i++)
//                 {
//                     CallData noticeCall = noticeCalls[i];
//                     //有整数部分的呼入时间比现在正组合的整数温度时间还早，则容错
//                     if (noticeCall.callin_time < endTime)
//                     {
//                         ShowTextLogProc("---------------放弃呼叫数据-------------------");
//                         ShowTextLogProc(noticeCall.caller);
//                         ShowTextLogProc(noticeCall.callin_time.ToString());
//                         ShowTextLogProc("判断时间点:"+noticeCall.callin_time.ToString());
//                         ShowTextLogProc("----------------------------------------------");       
//                         noticeCalls.RemoveAt(i);
//                         bOK = false;
//                         break;
//                     }
//                 }
//             }
//         }
//         DateTime FirstIntCheckTime;
//         void CheckIntCall(List<CallData> intCalls,DateTime endTime)
//         {
//             if (intCalls == null)
//                 return;
//             bool bOK = false;
//             while (!bOK)
//             {
//                 bOK = true;
//                 for (int i = 0; i < intCalls.Count; i++)
//                 {
//                     CallData intCall = intCalls[i];
//                     //有整数部分的呼入时间比现在正组合的整数温度时间还早，则容错
//                     if (intCall.callin_time < endTime)
//                     {
//                         OldTempData oldTd = OldTempDataDBOption.GetOldTemp(intCall.caller);//= (TempData)OldTemp[intCall.caller];
//                         if (oldTd != null)
//                         {
//                             DateTime date = oldTd.CallInTime;
//                             //5小时内有效
//                             if (date.AddHours(5) > intCall.callin_time)
//                             {
//                                 float t = oldTd.Temperature;
//                                 int newInt = intCall.UserIndex + 11;
//                                 int oldInt = (int)t;
//                                 int delta = newInt - oldInt;
//                                 if (delta > 1)
//                                 {
//                                     t = newInt + 0.0f;
//                                 }
//                                 else if (delta > 0)
//                                 {
//                                     t = newInt + 0.2f;
//                                 }
//                                 else if (delta < -1)
//                                 {
//                                     t = newInt + 0.9f;
//                                 }
//                                 else if (delta < 0)
//                                 {
//                                     t = newInt + 0.8f;
//                                 }
//                                 else//整数部分相等
//                                 {
//                                     int h1 = date.Hour;
//                                     int h2 = intCall.callin_time.Hour;
//                                     DateTime dd = date;
//                                     t = t - oldInt;
//                                     while (true)
//                                     {
//                                         dd = dd.AddHours(1);
//                                         if (dd >= intCall.callin_time)
//                                         {
//                                             break;
//                                         }
//                                         else
//                                         {
//                                             if (dd.Hour < 3 || dd.Hour > 15)
//                                                 t = t - 0.1f;
//                                             else
//                                                 t = t + 0.1f;
//                                         }
//                                     }
//                                     float t1 = newInt + t;
//                                     h1 = (int)t1;
//                                     if (h1 != newInt)
//                                     {
//                                         t = newInt + 0.0f;
//                                     }
//                                     else
//                                     {
//                                         t = t1;
//                                     }
//                                 }
//                                 //存储数据
//                                 TempData td = new TempData();
//                                 td._Caller = intCall.caller;
//                                 td._CallInTime = intCall.callin_time;//整数的时间
//                                 td._Temperature = t;
//                                 td._ErrFlag = 1;
//                                 //存储数据
//                                 if (NewTempData != null)
//                                 {
//                                     NewTempData(td);
//                                 }
//                                 OldTempData oldtd = new OldTempData();
//                                 oldtd.Caller = intCall.caller;
//                                 oldtd.CallInTime = intCall.callin_time;//整数的时间
//                                 oldtd.Temperature = t;
//                                 oldtd.ErrFlag = 1;
//                                 OldTempDataDBOption.SavwOldTemp(oldtd);
//                                 //OldTemp[td._Caller] = td;//保存旧温度  
//                                 ShowTextLogProc("---------------组合温度，只有整数容错-------------------");
//                                 ShowTextLogProc(intCall.caller);
//                                 ShowTextLogProc(t.ToString());
//                                 ShowTextLogProc("整数部分到达时间" + intCall.callin_time.ToString());
//                                 ShowTextLogProc("排查时间"+endTime.ToString());
//                                 ShowTextLogProc("上次温度时间"+oldTd.CallInTime.ToString());
//                                 ShowTextLogProc("----------------------------------------------");
//                             }
//                             else
//                             {
//                                 ShowTextLogProc("---------------放弃整数部分，历史温度间隔超过5小时-------------------");
//                                 ShowTextLogProc(intCall.caller);
//                                 ShowTextLogProc((intCall.UserIndex + 11).ToString());
//                                 ShowTextLogProc(intCall.callin_time.ToString());
//                                 ShowTextLogProc(oldTd.CallInTime.ToString());
//                                 ShowTextLogProc("----------------------------------------------");
//                             }
//                         }
//                         else
//                         {
//                             ShowTextLogProc("---------------放弃整数部分，没有历史温度-------------------");
//                             ShowTextLogProc(intCall.caller);
//                             ShowTextLogProc((intCall.UserIndex + 11).ToString());
//                             ShowTextLogProc(intCall.callin_time.ToString());
//                             ShowTextLogProc("----------------------------------------------");
//                         }
//                         intCalls.RemoveAt(i);
//                         bOK = false;
//                         break;
//                     }
//                 }
//             }
//         }
//         int GetEarlyDecamal(List<CallData> decimalCalls)
//         {
//             DateTime dt = decimalCalls[0].callin_time;
//             int ret=0;
//             for (int i = 1; i < decimalCalls.Count; i++)
//             {
//                 if (dt > decimalCalls[i].callin_time)
//                 {
//                     ret = i;
//                     dt = decimalCalls[i].callin_time;
//                 }
//             }
//             return ret;
//         }
//         DateTime GetMinLastGetTime()
//         {
//             DateTime dt = LastGetTime[19];
//             for (int i = 20; i < 29; i++)
//             {
//                 if (dt > LastGetTime[i])
//                     dt = LastGetTime[i];
//             }
//             return dt;
//         }
//         bool Login(int index)
//         {
//             try
//             {
//                 HttpWebResponse hr = WebResponse[index].CreateGetHttpResponse("http://www.c4006.com/user/servlet/verify.tslogin");
//                 //                 if(ShowText!=null)
//                 //                     ShowText(UserName[index] + WebResponse[index].Content);
//                 // {\"message\":\"8415\",\"data\":{},\"success\":true}
//                 DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(verify));
//                 MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(WebResponse[index].Content));
//                 verify v = (verify)s.ReadObject(stream);
//                 string url = "http://www.c4006.com/user/servlet/login.tslogin?userName=admin@";
//                 url += UserName[index];
//                 url += "&passWord=";
//                 url += Password[index];
//                 url += "&verifyCode=";
//                 url += v.message;
//                 url += "&verifyHidden=";
//                 url += v.message;
//                 url += "";
//                 hr = WebResponse[index].CreateGetHttpResponse(url);
//                 //                 if (ShowText != null)
//                 //                     ShowText(UserName[index] + WebResponse[index].Content);
//                 //{\"message\":\"index\",\"data\":{},\"success\":true} 
//                 stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(WebResponse[index].Content));
//                 s = new DataContractJsonSerializer(typeof(login));
//                 login l = (login)s.ReadObject(stream);
//                 url = "http://www.c4006.com/" + l.message;
//                 hr = WebResponse[index].CreateGetHttpResponse(url);
//                 //ShowText(UserName[index] + WebResponse[index].Content);
//                 ShowTextLogProc("用户"+index.ToString() + "成功登陆!");
//             }
//             catch (System.Exception ex)
//             {
//                 //ErrLog(ex.Message);
//                 //ShowText(ex.Message + "....");
//                 ShowTextLogProc("用户" + index.ToString() + "登陆失败--->" + ex.Message);
//                 return false;
//             }
//             return true;
//         }
//         public List<CallData> GetData(int index)
//         {
//             List<CallData> ret = null;
//             int page = 1;
//             int left = 0;
//             int retry = 5;
//             string url;
//             string web="";
//             try
//             {
//                 while (retry != 0)
//                 {
//                     retry--;
//                     if (retry < 3)
//                         Thread.Sleep(10000);
//                     url = "http://www.c4006.com/customer/servlet/GetExtensionCallerByID.ts?beginTime=";
//                     url += LastGetTime[index].ToString("yyyy-MM-dd HH:mm:ss");//含当前这秒
//                     url += "&endTime=";
//                     url += FirstIntCheckTime.ToString("yyyy-MM-dd HH:mm:ss");//DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//                     url += "&page=" + page.ToString();
//                     url += "&limit=100";
//                     HttpWebResponse hr = WebResponse[index].CreateGetHttpResponse(url);
//                     web = WebResponse[index].Content;
//                     DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(myData));
//                     MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(WebResponse[index].Content));
//                     myData calldata = (myData)s.ReadObject(stream);
//                     ShowTextLogProc(LastGetTime[index].ToString("yyyy-MM-dd HH:mm:ss") + "~" + FirstIntCheckTime.ToString("yyyy-MM-dd HH:mm:ss") + ":" + "用户" + index.ToString() + ":" + WebResponse[index].Content);
// //                     if (calldata.count != 0)
// //                     {
// //                         //ShowTextLogProc(LastGetTime[index].ToString("yyyy-MM-dd HH:mm:ss") + "~" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":" + "用户" + index.ToString()+":" + WebResponse[index].Content);
// //                         ShowTextLogProc(LastGetTime[index].ToString("yyyy-MM-dd HH:mm:ss") + "~" + FirstIntCheckTime.ToString("yyyy-MM-dd HH:mm:ss") + ":" + "用户" + index.ToString() + ":" + WebResponse[index].Content);
// //                     }
// //                     else 
// //                     {
// //                         ShowTextLogProc(LastGetTime[index].ToString("yyyy-MM-dd HH:mm:ss") + "~" + FirstIntCheckTime.ToString("yyyy-MM-dd HH:mm:ss") + ":" + "用户" + index.ToString() + ":" + WebResponse[index].Content);
// //                     }
//                     if (!calldata.success)
//                     {
//                         //ShowTextLogProc(UserName[index] + "重新登陆!");
//                         Login(index);
//                         continue;
//                     }
//                     else
//                     {
//                         if (calldata.data.Length != 0)
//                         {
//                             if (ret == null)
//                                 ret = new List<CallData>();
//                             for (int j = 0; j < calldata.data.Length; j++)
//                             {
//                                 CallData d = new CallData();
//                                 d.UserIndex = index;
//                                 d.caller = calldata.data[j].caller;
//                                 try
//                                 {
//                                     d.callin_time = DateTime.Parse(calldata.data[j].callin_time);
//                                 }
//                                 catch
//                                 {
//                                     ShowTextLogProc("用户" + index.ToString() + "的数据中存在无效字符串：" + calldata.data[j].callin_time);
//                                     continue;
//                                 }
//                                 ret.Add(d);
//                             }
//                             if (calldata.count > (calldata.data.Length + (page - 1) * 100))
//                             {
//                                 page++;
//                                 retry++;
//                                 left = calldata.count-(page-1)*100;
//                                 ShowTextLogProc("用户" + index.ToString() + "延时等待，剩余" + left.ToString() + "条数据");
//                                 Thread.Sleep(10000);
//                             }
//                             else
//                                 break;
//                         }
//                         else
//                             break;
//                     }
//                 }
//                 if (retry == 0)//失败
//                 {
//                     ret = null;
//                     ShowTextLogProc("用户" + index.ToString() + "失败，无法登陆!");
//                     //ErrLog(UserName[index] + "失败，无法登陆!");
//                 }
//             }
//             catch (System.Exception ex)
//             {
//                 ShowTextLogProc("用户" + index.ToString() + ":" + web + ex.Message);
//             }
//             if (ret != null)
//             {
//                 DateTime dt = ret[0].callin_time;
//                 for (int i = 0; i < ret.Count; i++)
//                 {
//                     if (dt < ret[i].callin_time)
//                     {
//                         dt = ret[i].callin_time;
//                     }
//                 }
//                 LastGetTime[index] = dt.AddSeconds(1);
//             }
//             ShowTextLogProc("用户" + index.ToString() + "数据获得完毕，等待处理!");
//             return ret;
//         }
//         public TempDataInterface(DateTime LastDateTime)
//         {
//             bPeriodGetDataThreadIsStop = true;
//             bPeriodGetDataThreadStop = false;
//             UserName = new string[30];
//             Password = new string[30];
// 
//             //11度到19度温度点
//             UserName[0] = "4000011254";//11
//             Password[0] = "2Wv4Bf";
//             UserName[1] = "4000011274";//12
//             Password[1] = "AT2DQi";
//             UserName[2] = "4000011324";//13
//             Password[2] = "DB4PPG";
//             UserName[3] = "4000011364";//14
//             Password[3] = "kqQW7f";
//             UserName[4] = "4000011374";//15
//             Password[4] = "FdcdQ4";
//             UserName[5] = "4000011424";//16
//             Password[5] = "ATLHGh";
//             UserName[6] = "4000011434";//17
//             Password[6] = "IkLNUQ";
//             UserName[7] = "4000011474";//18
//             Password[7] = "fsCEVg";
//             UserName[8] = "4000011524";//19
//             Password[8] = "DfnYUT";
// 
//             //20度到29度温度点
//             UserName[9] = "4000011534";//20
//             Password[9] = "4RFDZK";
//             UserName[10] = "4000011564";//21
//             Password[10] = "TDlwFh";
//             UserName[11] = "4000011574";//22
//             Password[11] = "CaEpnX";
//             UserName[12] = "4000011594";//23
//             Password[12] = "9moYWy";
//             UserName[13] = "4000011614";//24
//             Password[13] = "j2qGb6";
//             UserName[14] = "4000011624";//25
//             Password[14] = "imyXPX";
//             UserName[15] = "4000011634";//26
//             Password[15] = "ZzeJDu";
//             UserName[16] = "4000011704";//27
//             Password[16] = "IRJlvR";
//             UserName[17] = "4000011714";//28
//             Password[17] = "9mP8b5";
//             UserName[18] = "4000011724";//29
//             Password[18] = "InvpDT"; 
// 
//             //小数温度点
//             UserName[19] = "4000413804";//0
//             Password[19] = "4QjGjY";
//             UserName[20] = "4000413814";//1
//             Password[20] = "EwuEbv";
//             UserName[21] = "4000413824";//2
//             Password[21] = "FH48O3";
//             UserName[22] = "4000413834";//3
//             Password[22] = "cfp3pw";
//             UserName[23] = "4000414154";//4
//             Password[23] = "ZRwJdE";
//             UserName[24] = "4000413854";//5
//             Password[24] = "grN9bu";
//             UserName[25] = "4000413864";//6
//             Password[25] = "GvXOlH";
//             UserName[26] = "4000413874";//7
//             Password[26] = "YCoweF";
//             UserName[27] = "4000414124";//8
//             Password[27] = "HBdDuS";
//             UserName[28] = "4000414134";//9
//             Password[28] = "oZEQbT";
//             //申告号码
//             UserName[29] = "4000011074";//
//             Password[29] = "VTNZR4";
// 
//             WebResponse = new WFHttpWebResponse[30];
//             IntCalls = new Hashtable();
//             //OldTemp = new Hashtable();
//             DecimalCalls = new Hashtable();
//             NoticeCalls = new Hashtable();
//             LastGetTime = new DateTime[30];
//             for (int i = 0; i < 30; i++)
//             {
//                 LastGetTime[i] = LastDateTime.AddSeconds(1);
//             }            
//             for (int i = 0; i < 30; i++)
//             {
//                 WebResponse[i] = new WFHttpWebResponse();             
//             }
//             WFNetLib.ADO.AccessOP.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\温度组合用历史温度.accdb;Persist Security Info=False";
//         }
//         private void ShowTextLogProc(string str)
//         {
//             str = DateTime.Now.ToString("HH:mm:ss:ffff") + ":  " + str;
//             TextLog.AddTextLog(str);
//             if (ShowText != null)
//                 ShowText(str);
//         }
//         public ReBiaoData GetReBiaoData()
//         {
//             ReBiaoData rbd = new ReBiaoData();
//             return rbd;
//         }
//     }
// }
